home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / MMULib / MMULib.readme < prev    next >
Encoding:
Text File  |  2002-03-13  |  12.0 KB  |  289 lines

  1. Short:    Library to ctrl the MC68K MMUs
  2. Uploader: thor@math.tu-berlin.de (Thomas Richter)
  3. Author:   thor@math.tu-berlin.de (Thomas Richter)
  4. Type:     util/libs
  5. Requires: Os 2.04, a 68020/68851, 68030, 68040 or 68060 with a working MMU
  6. Version:  43.6
  7.  
  8. -----------------------------------------------------------------------------
  9.  
  10. NOTE:    The developer information went now into the "MuManual" archive, this
  11.     is the "user only" distribution.
  12.  
  13. -----------------------------------------------------------------------------
  14.  
  15. Purpose and goal of this library:
  16.  
  17. The mmu.library is a basis for MMU (memory management) related functions the 
  18. MC68K family can perform. Up to now certain hacks are available that program 
  19. the MMU themselves (Enforcer,CyberGuard,GuardianAngle,SetCPU,Shapeshifter,
  20. VMM,GigaMem...). 
  21. It's therefore not unexpected that these tools conflict with each other.
  22. There's up to now no Os support for the MMU at all - the gap this mmu.library
  23. fills.
  24.  
  25. The goal is to provide a basis of functions to address and program the MMU in
  26. a hardware independent, Os friendly fashion. Hence, the new version of the
  27. Enforcer, called MuForce, will work together with virtual memory, and others.
  28.  
  29. The mmu.library is also the basis for a virtual memory project, the 
  30. memory.library. Even though the mmu.library does not provide virtual memory
  31. itself, it builds the basics to allow an easy implementation and to avoid the
  32. hacks required by other implementations so far.
  33.  
  34. ------------------------------------------------------------------------------
  35.  
  36. Release 43.6
  37. --------------
  38.     - mmu.library: Added another safety check for the DMA property
  39.       list.
  40.     - MuMapRom: The reset-and-stay resident mechanism of MuMapRom
  41.       makes now use of the ColdCapture exec vector and a nice little
  42.       extra hack.
  43.     - MuMapRom: Adds now a 16MB "safety zone" around memory areas to
  44.       keep some wierd memory tests working.
  45.     - memory.library: Changed the memory administration functions a
  46.       bit by adding a "ranger pointer". 
  47.  
  48. Release 43.5.1
  49. --------------
  50.     - 680x0.library: Handled the low-memory area of MuMove4K unproperly
  51.       and therefore broke MuFastZero. Fixed.
  52.     - MuMapRom: Did not work at all if the "ROMINFAST" option was not
  53.       present at the command line. Should be much better now.
  54.     - memory.library: The library does no longer allow the attachment of
  55.       an address space to the global MMU context.
  56.     - memory.library: The library does no longer support attachments of
  57.       address spaces to supervisor contexts. This wouldn't have worked
  58.       anyhow.
  59.     - MuGuardianAngel: AllocAbs() was still broken and returned the wrong
  60.       register.
  61.  
  62. Release 43.5
  63. --------------
  64.     - CPU libraries: All CPU libraries reset the VBR now before restarting
  65.       the ROM.
  66.     - mmu.library: Fixed a possible race condition of the 68060 exception
  67.       handler. The 68060 can report a misaligned access even though the
  68.       fault address and the access fault size do not indicate that a page
  69.       boundary is crossed.
  70.     - Included a new test tool: "SwapTest" will check whether the 68060 or
  71.       68040 library support some race conditions on swapping correctly.
  72.       Note that this test will fail for most third-party libraries.
  73.     - Included MuForce 40.30 (Aminet release) that is required for the
  74.       latest MuGA. It won't work with former releases.
  75.  
  76. Release 43.4.2    (Internal release only)
  77. --------------
  78.     - memory.library:
  79.         - fixed possible memory leak of the swap hooks. They should
  80.           have closed files/devices on VMPACK_EXIT, not VMPACK_CLOSE.
  81.     - Updated the documentation of the mmu.library for the new functions.
  82.     - Included a first version for the memory.library documentation.
  83.  
  84.  
  85. Release 43.4.1    (Internal release only)
  86. --------------
  87.     - mmu.library:    Forgot to include the 43.4 of the mmu.library in the
  88.       last distribution.
  89.     - memory.library:
  90.         - fixed broken handling of private swap hooks for 
  91.           virtual memory pools.
  92.         - fixed broken handling of "Retry" of error requesters.
  93.         - added more sophisticated error handling for out of memory
  94.           and swap alerts. The code will no longer try to repeat for
  95.           obvious errors.
  96.     - mmap.c:
  97.         - fixed missing result code on error.
  98.  
  99.  
  100. Release 43.4    (Internal release only)
  101. --------------
  102.     - mmu.library: The 68040 race condition fix of the 43.3 wasn't as
  103.       good as I though. Reworked this mess again. It will now be able
  104.       to handle the wierd condition where a write-back is busy and
  105.       detected from a word-sized movem, even though it comes from a
  106.       different instruction. Yuck!
  107.     - mmu.library: Added workarounds for the V37 ObtainSemaphoreShared()
  108.       bug.
  109.     - mmu.library: Made all context locks shared as far as possible.
  110.     - mmu.library: Fixed a possible register trash for the shared context
  111.       locks.
  112.     - memory.library: Worked again a bit on the memory allocation routines
  113.     - Examples: vmem.c and mmap.c are now ready for release. The examples
  114.       look now like they are supposed to.
  115.     - Updated the mmu.library autodocs a bit.
  116.     - memory.library:
  117.         - added another cache at the swap hook side of the library.
  118.           This should hopefully help to improve the performance a
  119.           bit as it tries to bundle I/O accesses.
  120.         - the library limits now the virtual memory range of the
  121.           address space to the user defined limit before asking the
  122.           hook for the maximal size. This avoids unnecessary disk-
  123.           trashing for the file hook.
  124.         - the library should behaive much better now for low memory
  125.           situations and errors on the swap hook. The hook remains
  126.           responsive in these situations. 
  127.         - added a (localizable) error requester for failures of the
  128.           three built-in swap hooks.
  129.         - All file I/O goes now over packets rather the dos.library.
  130.           This would avoid trouble in case the dos.library gets
  131.           patched over.
  132.  
  133.  
  134. Release 43.3    (Internal release only)
  135. --------------
  136.     
  137.     - mmu.library: Fixed a possible race condition of the Motorola
  138.       "Diva", the 68040. Unlike what the documentation suggests, the
  139.       CM bit is not directly related to access errors of movem's. )-:
  140.     - memory.library:
  141.         - Fixed a bug in the final page disposal routine that
  142.           could have caused MuGA hits. Fixed.
  143.         - Fixed a bug in the swap daemon that could have tried
  144.           to deliver a motor tick to the swap hook even though
  145.           the hook has been released already.
  146.         - Reworked the internal memory handling. The memory
  147.           pools come now with scratch lists to speed up the
  148.           allocation of tiny chunks, and to avoid unnecessary
  149.           virtual memory accesses. Further, the library uses
  150.           now its own set of pooled allocation/deallocation
  151.           routines. First of all, this avoids clashes with
  152.           whatever patch might sit there and doesn't know
  153.           how to handle virtual memory correctly, especially
  154.           the rather harsh Forbid()/Disable() rules. Second,
  155.           the new pooled allocation tries a combination of
  156.           a "best fit" plus "buddy chunk" allocation that is
  157.           less naive than the native exec allocation. 
  158.           (but still naive enough to allow improvements...)
  159.         - Fixed bugs in the computation of the swap pool size
  160.           that happened mainly on machines with Z2 memory
  161.           only.
  162.         - Added documentation for the PoolVSize() function
  163.           that was forgotten for the 0.0 release last time.
  164.         - Added a tag to restrict the size of the virtual
  165.           memory pool created.
  166.     - MuGA: Fixed Deallocate()/Allocate() patches that forgot to
  167.       align memory correctly.
  168.     - MuRedox: Aparently, the new version never made it to Aminet,
  169.       even though it was uploaded. It provides one new option,
  170.       SHOWPATCHEDINSTRS, which shows the list of instructions it
  171.       was able to replace by its own set of stub-routines.
  172.  
  173. If the vmem example program shows an "Allocation Failed" report, do not worry.
  174. This is just because the memory pool run out of data. This is likely to happen
  175. due to the way how this stress-test works.
  176.  
  177. The memory.library got tested now on the 030,040 and 060.
  178.  
  179.  
  180. Release 43.2    (Internal release only)
  181. --------------
  182.     - mmu.library: Added support for the mmu.resource. This is a
  183.       system resource that defines the interface to the true hard-
  184.       ware MMU. The library will make use of this resource whenever
  185.       it is present, and will fall back to its build-in routines
  186.       otherwise. The purpose of the resource is to allow emulation
  187.       of the MC68K MMU on non-native CPUs (i.e. x86) without the
  188.       need to re-write the entire library from scratch.
  189.     - mmu.library: "shared" pages are finally officially supported.
  190.       Note that most of this stuff worked already in V42.
  191.     - mmu.library: Fixed a bug in PhysicalLocation() that did not
  192.       return the true physical location in case the memory was
  193.       marked as MAPP_SHARED.
  194.     - mmu.library: Added GetPageUsedModified() to parse the
  195.       Used/Modified flags more easely than with Get/SetPage-
  196.       Properties(). This is still to be documented and mainly for
  197.       the purpose of the memory.library.
  198.     - MuGA: Fixed a register trash that broke AllocAbs() and related
  199.       calls.
  200.     - NEWS FLASH! Finally, the first release of the memory.library
  201.       is available. The purpose of this release is to supply
  202.       virtual memory to the AmigaOs in a flexible and compatible
  203.       way. There is not yet much documentation, but there are
  204.       includes and autodocs.
  205.  
  206. ------------------------------------------------------------------------------
  207.  
  208.                          The THOR-Software Licence (v2, 24th June 1998)
  209.  
  210.  
  211. This License applies to the computer programs known as the "mmu.library" 
  212. and its sources. The "Program", below, refers to such program. The
  213. "Archive" refers to the package of distribution, as prepared by the author
  214. of the Program, Thomas Richter. Each licensee is addressed as "you".
  215.  
  216.  
  217.  
  218. The Program and the data in the archive are freely distributable
  219. under the restrictions stated below, but are also Copyright (c)
  220. Thomas Richter.
  221.  
  222. Distribution of the Program, the Archive and the data in the Archive by a
  223. commercial organization without written permission from the author to any
  224. third party is prohibited if any payment is made in connection with such
  225. distribution, whether directly (as in payment for a copy of the Program) or
  226. indirectly (as in payment for some service related to the Program, or
  227. payment for some product or service that includes a copy of the Program
  228. "without charge"; these are only examples, and not an exhaustive enumeration
  229. of prohibited activities).
  230.  
  231.  
  232. However, the following methods of distribution
  233. involving payment shall not in and of themselves be a violation of this
  234. restriction:
  235.  
  236.  
  237. (i) Posting the Program on a public access information storage and
  238. retrieval service for which a fee is received for retrieving information
  239. (such as an on-line service), provided that the fee is not
  240. content-dependent (i.e., the fee would be the same for retrieving the same
  241. volume of information consisting of random data).
  242.  
  243.  
  244. (ii) Distributing the Program on a CD-ROM, provided that
  245.  
  246. a) the Archive is reproduced entirely and verbatim on such CD-ROM, including
  247. especially this licence agreement;
  248.  
  249. b) the CD-ROM is made available to the public for a nominal fee only,
  250.  
  251. c) a copy of the CD is made available to the author for free except for
  252. shipment costs, and
  253.  
  254. d) provided further that all information on such CD-ROM is redistributable
  255. for non-commercial purposes without charge.
  256.  
  257.  
  258. Redistribution of a modified version of the Archive, the Program or the
  259. contents of the Archive is prohibited in any way, by any organization,
  260. regardless whether commercial or non-commercial. Everything must be kept
  261. together, in original and unmodified form.
  262.  
  263.  
  264.  
  265.  
  266. Limitations.
  267.  
  268.  
  269. THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO
  270. WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
  271. LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
  272. PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE
  273. RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD
  274. THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY
  275. SERVICING, REPAIR OR CORRECTION.
  276.  
  277.  
  278. IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE THE PROGRAM, THE ARCHIVE
  279. AND ALL DATA OF THIS ARCHIVE FROM YOUR STORAGE SYSTEM. YOU ACCEPT THIS
  280. LICENCE BY USING OR REDISTRIBUTING THE PROGRAM.
  281.  
  282.  
  283.                                                         Thomas Richter
  284.  
  285. -----------------------------------------------------------------------------
  286.  
  287. So long,
  288.     Thomas            (February 2002)
  289.